路径操作模块(path)
在文件操作过程中,都必须只用物理路径(绝对路径)
path模块提供了一系列与路径相关的API
- path.join([p1][,p2][,p3]…) => 连接多个路径
- path.basename(p, ext) =>获取文件名
- path.dirname(p) =>获取文件路径
- path.extname(p) =>获取文件扩展名
- path.format(obj) 和 path.parse(p) => 从对象中返回路径字符串,和 path.parse 相反。和返回路径字符串的对象
- path.relative(from, to) => 获取从from 到 to 的相对路径
同步或异步调用
fs 模块对文件几乎所有的操作都有同步和异步两种形式
例如:readFile()
和 readFileSync()
区别:
- 同步会阻塞代码的执行,异步则不会
- 异步调用将会读取任务下达到任务队列,直到任务执行完成才会回调
- 异常处理方面,同步必须使用 try catch 方式,异步可以通过回调函数的第一个参数
流的方式读取(readline)
对比普通的方式读取文件,流的方式的优点:内存占用始终是 1024 个字节,内存占用少,普通的方式是整体直接放入内存,内存占用高。
1 | var data = ''; |
如下图所示:
如图,不断的读取文件内容到内存创建的 Buffer 中,然后通过 buffer 返回到我们的代码中,这就是流的读取方式。
文件写入
确保操作没有额外的问题,一定使用绝对路径的方式
- 异步文件写入:fs.writeFile(file,data[,option],callback(err))
- 同步文件写入:fs.writeFileSync(file,data[,option])
- 流式文件写入:fs.createWriteStream(path[,option])
目录操作
创建一个目录
- fs.mkdir(path[,model],callback)
- fs.mkdirSync(path[,model])
删除一个空目录
- fs.rmdir(path,callback)
- fs.rmdirSync(path)
读取一个目录
- fs.readdir(path,callback(err,files))
- fs.readdirSync(path) // => 返回files
监视文件变化
- fs.watchFile(filename[,options],;ostemer(curr,prev))
-options:{persistent,interval} - fs.warch(filename[,options] [,listener])
浏览器的本质作用
- 将用户在地址栏中输入的 URL 地址封装成为请求消息(包含请求头和请求体字符串)
- 将得到的消息通过 Socket 的方式发送到所请求的网站服务器
- 接受服务器返回响应消息(包含响应头和相应体的字符串)
- 解析响应消息中的数据,渲染到界面上
完~